package pl.un4giv3n.mightvsmagic.utils.display;

import org.displaytag.decorator.TableDecorator;

import pl.un4giv3n.mightvsmagic.entity.SpecialSkillTemplate;

public class DisplaySkillTemplateDecorator extends TableDecorator {

	public String getBonus(){
		SpecialSkillTemplate template = (SpecialSkillTemplate) getCurrentRowObject();
		StringBuilder sb = new StringBuilder();
		appendSkillBonus(template, sb);
		appendDmgBonus(template, sb);
		appendElementalBonus(template, sb);
		return sb.toString();
	}
	
	public String getPrice(){
		SpecialSkillTemplate  item = (SpecialSkillTemplate) getCurrentRowObject();
		if(item.getPrice() == 0){
			return item.getPremiumPrice() + " <img src=\"./img/icons/dragonteeth.jpg\" alt=\"Smocze zęby\" title=\"Smocze zęby\"/>";
		}else{
			return item.getPrice() + " <img src=\"./img/icons/gold.jpg\" alt=\"Złoto\" title=\"Złoto\"/>";
		}
	}
	
	public String getRequirements() {
		SpecialSkillTemplate item = (SpecialSkillTemplate) getCurrentRowObject();
		StringBuilder builder = new StringBuilder();
		builder.append("Siła: ").append(item.getStrenghtReq()).append("<br/>");
		builder.append("Wytrzymałośc: ").append(item.getStaminaReq()).append("<br/>");
		builder.append("Mana: ").append(item.getManaReq()).append("<br/>");
		builder.append("Sztuka walki: ").append(item.getAttackReq()).append("<br/>");
		builder.append("Unik: ").append(item.getParryReq()).append("<br/>");
		builder.append("Doświadczenie bojowe: ").append(item.getRequiredFightExp()).append("<br/>");
		builder.append("Doświadczenie magiczne: ").append(item.getRequiredMagicExp()).append("<br/>");
		return builder.toString();
	}

	private void appendElementalBonus(SpecialSkillTemplate template,
			StringBuilder sb) {
		if(template.getFireDamage() != 0){
			sb.append("Obrażenia od ognia: ").append(template.getFireDamage()).append("<br/>");
		}
		if(template.getIceDamage() != 0){
			sb.append("Obrażenia od lodu: ").append(template.getIceDamage()).append("<br/>");
		}
		if(template.getEarthDamage() != 0){
			sb.append("Obrażenia od ziemi: ").append(template.getEarthDamage()).append("<br/>");
		}
		if(template.getWindDamage() != 0){
			sb.append("Obrażenia od wiatru: ").append(template.getWindDamage()).append("<br/>");
		}
		if(template.getFireDefence() != 0){
			sb.append("Ochrona od ognia: ").append(template.getFireDefence()).append("<br/>");
		}
		if(template.getIceDefence() != 0){
			sb.append("Ochrona od lodu: ").append(template.getIceDefence()).append("<br/>");
		}
		if(template.getEarthDefence() != 0){
			sb.append("Ochrona od ziemi: ").append(template.getEarthDefence()).append("<br/>");
		}
		if(template.getWindDefence() != 0){
			sb.append("Ochrona od wiatru: ").append(template.getWindDefence()).append("<br/>");
		}
	}

	private void appendDmgBonus(SpecialSkillTemplate template, StringBuilder sb) {
		if(template.getDmgFactor() != 0){
			sb.append("Obrażenia zwiększone o: ").append(template.getDmgFactor()).append("%").append("<br/>");
		}
		if(template.getDefFactor() != 0){
			sb.append("Obrona zwiększona o: ").append(template.getDefFactor()).append("%").append("<br/>");
		}
		if(template.getMinDmgIncrease() != 0){
			sb.append("Min obrażenia zwiększone o: ").append(template.getMinDmgIncrease()).append("<br/>");
		}
		if(template.getMaxDmgIncrease() != 0){
			sb.append("Max obrażenia zwiększone o: ").append(template.getMaxDmgIncrease()).append("<br/>");
		}
		if(template.getMinDefIncrease() != 0){
			sb.append("Min obrona zwiększona o: ").append(template.getMinDefIncrease()).append("<br/>");
		}
		if(template.getMaxDefIncrease() != 0){
			sb.append("Max obrona zwiększona o: ").append(template.getMaxDefIncrease()).append("<br/>");
		}
	}

	private void appendSkillBonus(SpecialSkillTemplate template,
			StringBuilder sb) {
		if(template.getAttackModifier() != 0){
			sb.append("Sztuka walki: ").append(template.getAttackModifier()).append("<br/>");
		}
		if(template.getParryModifier() != 0){
			sb.append("Unik: ").append(template.getParryModifier()).append("<br/>");
		}
		if(template.getStrenghtModifier() != 0){
			sb.append("Siła: ").append(template.getStrenghtModifier()).append("<br/>");
		}
		if(template.getStaminaModifier() != 0){
			sb.append("Wytrzymałoś: ").append(template.getStaminaModifier()).append("<br/>");
		}
		if(template.getManaModifier() != 0){
			sb.append("Mana: ").append(template.getManaModifier()).append("<br/>");
		}
		if(template.getSpeedModifier() != 0){
			sb.append("Szybkość: ").append(template.getSpeedModifier()).append("<br/>");
		}
		if(template.getSpeedFactor() != 0){
			sb.append("Szybkość zwiększona o: ").append(template.getSpeedFactor()).append("<br/>");
		}
	}
}
